<script setup lang="ts">
  import { onHide, onLaunch, onShow } from '@dcloudio/uni-app';
  import { useAppStore } from '@/pinia/app';
  import { isObject } from '@/mxp-ui/mxp-tool/utils/verify';
  import { autoLogin } from '@/utils/page/user';

  // #ifdef MP-WEIXIN
  import { WxPlayletManager } from '@/pages/drama/playlet-wx/wx-playlet-plugin';
  // #endif

  onLaunch((data) => {
    // 存储启动参数
    saveLaunchQuery(data?.query || {});
    const appStore = useAppStore();
    // h5通过监听全局点击事件，判断是否有交互
    setInteraction();
    // 小程序升级
    mpUpdate();
    // #ifdef MP-WEIXIN
    /** 微信短剧播放器 */
    const wxPlayletManager = new WxPlayletManager();
    wxPlayletManager.plugin.onPageLoad(wxPlayletManager.onPlayerLoad.bind(wxPlayletManager)); // 短剧播放器初始化完成的回调
    // #endif

    // 自动登录
    !appStore.loginState &&
      autoLogin().catch(() => {
        console.log('自动登录失败');
      });
  });

  onShow(() => {
    console.log('App Show');
  });

  onHide(() => {
    console.log('App Hide');
  });

  /** 存储启动参数 */
  function saveLaunchQuery(query: Record<string, unknown>) {
    useAppStore().setLaunchQuery(isObject(query) ? query : {});
  }

  /** h5通过监听全局点击事件，判断是否有交互 */
  function setInteraction() {
    // #ifdef H5
    document.body.addEventListener('touchend', () => useAppStore().setInteraction(), { once: true });
    // #endif
  }

  /**
   * 小程序升级
   */
  function mpUpdate() {
    // #ifdef MP

    setTimeout(() => {
      const updateManager = uni.getUpdateManager();

      updateManager.onUpdateReady(() => {
        uni.showModal({
          title: '更新提示',
          content: '新版本已经准备好，是否重启应用？',
          success(res2) {
            if (res2.confirm) {
              // 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
              updateManager.applyUpdate();
            }
          },
        });
      });

      updateManager.onUpdateFailed((err) => {
        // 新的版本下载失败
        console.log('下载新版本失败====', err);
      });
    }, 60);
    // #endif
  }
</script>

<style>
  /* #ifndef APP-NVUE */
  page {
    background: #f8f8f8;
  }
  /* #endif */
</style>
